package cn.iocoder.yudao.module.system.controller.admin.gugu.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 专业推荐项 VO
 *
 * @author 芋道源码
 */
@Schema(description = "管理后台 - 专业推荐项 VO")
@Data
public class MajorRecommendItemVO {

    @Schema(description = "专业ID", example = "1")
    private Long majorId;

    @Schema(description = "专业名称", example = "计算机科学与技术")
    private String majorName;

    @Schema(description = "专业代码", example = "080901")
    private String majorCode;

    @Schema(description = "学校UUID", example = "uuid-001")
    private String schoolUuid;

    @Schema(description = "学校名称", example = "南京大学")
    private String schoolName;

    @Schema(description = "学校所在省份", example = "江苏")
    private String schoolProvince;

    @Schema(description = "学校所在城市", example = "南京")
    private String schoolCity;

    @Schema(description = "学科门类", example = "工学")
    private String disciplinaryCategory;

    @Schema(description = "学科子类", example = "计算机类")
    private String disciplinarySubCategory;

    @Schema(description = "录取概率", example = "75")
    private Integer enrollProbability;

    @Schema(description = "推荐类型", example = "WENTUO")
    private String type;

    @Schema(description = "推荐类型描述", example = "稳妥")
    private String typeDesc;

    @Schema(description = "推荐理由", example = "该专业录取概率较高，符合您的分数水平")
    private String reason;

    @Schema(description = "历年录取分数")
    private ScoreInfoVO scoreInfo;

    @Schema(description = "招生计划信息")
    private EnrollmentInfoVO enrollmentInfo;

    @Schema(description = "专业详情")
    private MajorDetailVO majorDetail;

    @Schema(description = "学校标签", example = "[\"985\", \"211\", \"双一流\"]")
    private List<String> schoolTags;

    @Schema(description = "专业标签", example = "[\"热门专业\", \"就业前景好\"]")
    private List<String> majorTags;

    @Schema(description = "排序权重", example = "100")
    private Integer sortWeight;

    /**
     * 分数信息
     */
    @Schema(description = "分数信息")
    @Data
    public static class ScoreInfoVO {

        @Schema(description = "最低分", example = "580")
        private Integer lowestScore;

        @Schema(description = "平均分", example = "585")
        private Integer averageScore;

        @Schema(description = "最高分", example = "590")
        private Integer highestScore;

        @Schema(description = "最低位次", example = "15000")
        private Integer lowestRank;

        @Schema(description = "平均位次", example = "14000")
        private Integer averageRank;

        @Schema(description = "年份", example = "2023")
        private Integer year;
    }

    /**
     * 招生计划信息
     */
    @Schema(description = "招生计划信息")
    @Data
    public static class EnrollmentInfoVO {

        @Schema(description = "招生人数", example = "50")
        private Integer planCount;

        @Schema(description = "选科要求", example = "物理+化学")
        private String subjectRequirement;

        @Schema(description = "学制", example = "4年")
        private String duration;

        @Schema(description = "学费", example = "5000")
        private String tuition;
    }

    /**
     * 专业详情
     */
    @Schema(description = "专业详情")
    @Data
    public static class MajorDetailVO {

        @Schema(description = "专业介绍")
        private String introduction;

        @Schema(description = "主要课程")
        private List<String> mainCourses;

        @Schema(description = "就业方向")
        private String careerDirection;

        @Schema(description = "毕业规模", example = "大型")
        private String graduateScale;

        @Schema(description = "男女比例", example = "7:3")
        private String maleFemaleRatio;

        @Schema(description = "推荐院校")
        private List<String> recommendSchools;
    }
}
